iT邦幫忙

2025 iThome 鐵人賽

DAY 4
0

Github大家應該都不陌生吧,許多人會在上面跟別人一起寫專案,分享自己的開源專案

但你知道git指令在CTF中也時常被使用到嗎?

為什麼 CTF 要用到 git?

在某些題目中,出題者會故意留下 .git 資料夾,這是 Git 版本控制用來記錄所有歷史操作的地方。

而我們可以透過一些 git 指令,來還原整個原始碼的歷史紀錄,甚至找出被刪除的 flag!

git 跟 GitHub 的差別?

  • Git 是一套版本控制系統(你在本地端使用的工具)
  • GitHub 是一個讓你把 Git 專案放到雲端、多人協作的網站

常見 CTF 題目會用到哪些 git 指令?

git clone 下載整個 git 專案
git log 查看提交歷史
git show <commit_hash> 查看文件在歷史中的變化
git checkout <commit_hash> <file_path> 還原過去的檔案
git branch查看有沒有其他分支
git switch branch_name切換到那個分支

了解了以上內容,接下來來看一些CTF題目吧!

Blame Game

這題題述說了要找以前有人提交過的紀錄

所以我們可以用git log message.py 找到這個檔案過去commit的紀錄,直接就可以看到有一個Author名字是flag

https://ithelp.ithome.com.tw/upload/images/20250814/2016910530cuEUD4Bo.png

Time Machine

這題想知道他上次在做甚麼,所以一樣用 git log message.txt 就能看到他之前的紀錄,他直接就把flag寫在上次的commit紀錄裡了!

https://ithelp.ithome.com.tw/upload/images/20250814/201691055tHizuSlux.png

Commitment Issues

這題說他曾經把flag加到檔案裡過但他刪掉了,我們先找到過去的紀錄

https://ithelp.ithome.com.tw/upload/images/20250814/20169105MiSwgasLv6.png

可以看到他確實記錄下flag過,所以我們可以用 git show 3d5ec8a26ee7b092a1760fea18f384c35e435139 查看他過去做的變化,就可以看到他曾經寫入的flag!

https://ithelp.ithome.com.tw/upload/images/20250814/20169105adCKQZJtBn.png

Collaborative Development

這題說的是「團隊合作」,有用過 GitHub 的人應該知道,它可以開很多 branch(分支)

在 Git 裡,「分支」就像是平行時空的副本

你可以把主線(main)想成你的作業正本。

當你想嘗試修改或加入新功能,又不想破壞原本內容時,就可以開一個「分支 branch」。

你可以在這個分支裡盡情改動,確認沒問題後,再合併(merge)回主線。

這在多人合作的專案中是非常常見的流程。

這題我們可以先用git branch 查看他的分枝

https://ithelp.ithome.com.tw/upload/images/20250814/20169105HejqvTrp8w.png

可以看到有三個part,推測這題flag被拆成三段,用git switch 分別切換到三個分枝,取得三段的flag,合在一起就是這題的flag了!

https://ithelp.ithome.com.tw/upload/images/20250814/20169105F5UbUAtfcs.png


以上就是今天的內容啦~明天會教一些跟編碼相關的知識~

想看更多,記得明天再來喔~


上一篇
Day 3 - Linux常見指令
下一篇
Day 5 - 編碼
系列文
一天一題picoCTF:從Easy開始的新手生活7
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言